package friend

import (
	"api/common"
	"api/pb/friend"
	"context"

	"api/internal/svc"
	"api/internal/types"

	"github.com/zeromicro/go-zero/core/logx"
)

type UpdateFriendRelationLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewUpdateFriendRelationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateFriendRelationLogic {
	return &UpdateFriendRelationLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

// UpdateFriendRelation 更新好友关系
func (l *UpdateFriendRelationLogic) UpdateFriendRelation(req *types.FriendRelationInfo) (resp *types.Empty, err error) {
	// 该接口使用功能比较强大, 可以拉黑/取消拉黑/删除好友
	// 自己拉黑好友, 好友显示被拉黑
	// 自己将拉黑好友解除, 好友关系显示正常
	// 自己删除好友, 己方不展示好友, 好友方展示被删除
	userID, err := common.GetUserIDFromCtx(l.ctx)
	if err != nil {
		return nil, err
	}
	_, err = l.svcCtx.FriendRPC.UpdateRelation(l.ctx, &friend.RelationInfo{
		UserId:   userID,
		FriendId: req.FriendID,
		Status:   req.Status,
	})
	if err != nil {
		return nil, err
	}
	return &types.Empty{}, nil
}
